all : server client

server : BankDatabase.o BankServer.o ServerSyncAgent.o Rpc_xdr.o Rpc_svc.o Rpc_svc_cpp.o Rpc_clnt.o CommandLineHelper.o gtest.o sqlite3.o
	g++ -o server BankDatabase.o BankServer.o ServerSyncAgent.o Rpc_xdr.o Rpc_svc.o Rpc_svc_cpp.o Rpc_clnt.o CommandLineHelper.o gtest.o sqlite3.o -lnsl

client : BankClient.o Rpc_xdr.o Rpc_clnt.o CommandLineHelper.o gtest.o sqlite3.o
	g++ -o client BankClient.o Rpc_xdr.o Rpc_clnt.o CommandLineHelper.o gtest.o sqlite3.o -lnsl
	
CommandLineHelper.o : CommandLineHelper.cpp CommandLineHelper.h
	g++ -c CommandLineHelper.cpp
	
BankServer.o : BankServer.c Rpc.h macros.h BankServer.h BankDatabase.h ServerSyncAgent.h
	g++ -c BankServer.c -I./gtest -I./gtest/include -I./sqlite
	
BankClient.o : BankClient.cpp BankClient.h macros.h Rpc.h CommandLineHelper.h
	g++ -c BankClient.cpp -I./gtest -I./gtest/include -I./sqlite
	
ServerSyncAgent.o : ServerSyncAgent.cpp ServerSyncAgent.h macros.h Rpc.h BankDatabase.h
	g++ -c ServerSyncAgent.cpp -I./gtest -I./gtest/include -I./sqlite
	
BankDatabase.o : BankDatabase.cpp BankDatabase.h macros.h
	g++ -c BankDatabase.cpp -I./gtest -I./gtest/include -I./sqlite	
	
Rpc_xdr.o : Rpc_xdr.c Rpc.h
	gcc -c Rpc_xdr.c

Rpc_clnt.o : Rpc_clnt.c Rpc.h
	gcc -c Rpc_clnt.c
	
Rpc_svc.o : Rpc_svc.c Rpc.h
	gcc -c Rpc_svc.c -I./gtest -I./gtest/include -I./sqlite
	
Rpc_svc_cpp.o : Rpc_svc_cpp.cpp Rpc.h ServerSyncAgent.h macros.h BankServer.h BankDatabase.h CommandLineHelper.h
	g++ -c Rpc_svc_cpp.cpp  -I./gtest -I./gtest/include -I./sqlite
	
gtest.o : 
	g++ -o gtest.o -c ./gtest/src/gtest-all.cc -I./gtest -I./gtest/include -I./sqlite
	
sqlite3.o :
	gcc -c ./sqlite/sqlite3.c
	
AllRpc : RpcServer RpcClient

rpcgen :  Rpc.x
	rpcgen -a  Rpc.x
	
RpcServer :	rpcgen Rpc_svc.c Rpc_server.c Rpc_xdr.c Rpc.h
	gcc -o RpcServer Rpc_svc.c Rpc_server.c Rpc_xdr.c -lnsl
	
RpcClient : rpcgen Rpc_clnt.c Rpc_client.c Rpc_xdr.c  Rpc.h
	gcc -o RpcClient Rpc_clnt.c Rpc_client.c Rpc_xdr.c -lnsl
	
clean :
	rm -f BankDatabase.o BankServer.o BankClient.o Rpc_xdr.o Rpc_clnt.o Rpc_svc.o Rpc_svc_cpp.o ServerSyncAgent.o CommandLineHelper.o client server
	
clean-data :
	rm -f *.dat *.db